레거시 코드에서의 에이전트 기반 코딩

  • 2025-11-05
  • 저자: AK

레거시 시스템에서 에이전트 기반 코딩을 잘 해보기 위한 고민들.

개요

지인과 짝 코딩을 마치고 회고를 하던 중, 내가 개인 프로젝트에서는 에이전트 기반 코딩을 열심히 하는데 정작 돈 받고 하는 프로젝트에서는 태도가 보수적으로 변하면서 수제 코딩 비율이 높아지더라는 걸 깨달았다. (2025년 10월 기준)

레거시 시스템에서 에이전트 기반 코딩을 더 적극적으로 하기 위한 방법을 고민해보면 좋겠다는 생각이 들었다.

생각 조각들

(ToDo: 마저 정리하기)

필요한 건 결과이지 과정이 아님:

  • 에이전트 기반 코딩 실험 1에서 에이전트에게 인간 흉내를 내며 TDD를 하게 시키려고 애썼던 경험
  • 내게 실제로 필요했던 것? 현재까지의 요구사항을 만족하는 심플한 설계와 현재까지의 코드를 커버하는 좋은 테스트 케이스. 에이전트가 TDD 주기를 그대로 따르는지 여부는 중요하지 않다.

한편 모든 결과는 더 큰 무언가를 위한 과정이라는 점을 생각하면 뭐가 과정이고 뭐가 결과인지가 애매함. 결국 내가 찾아야하는 건 무턱대고 막연한 “결과”가 아니라 적절한 추상화 수준에서의 결과.

지금 맥락에서의 적절한 추상화 수준이란? 인간의 코드 리뷰가 병목이므로, 리뷰하기 좋은 단위의 수정.

레거시 코드에서 작업할 때 필요한 것들은?

  • 테스트가 없더라도 시스템이 동작이 바뀌지 않는 걸 완벽히 보장하는 수정만 하기(Hyperaware editing)
  • 일반적으로 “좋은 코드”라고 부르는 상태가 아닌 상태로 일시적으로 이동하기. 예: 일부러 중복을 만들기(Reconcile differences), 버그가 있기 때문에 통과하는 테스트 만들기(Characterization test)
  • AUT는 건드리지 않고 테스트만 추가하기
  • 코드의 특정 부분에 대해서만 타입 검사나 린터 설정을 강화한 뒤 점차 넓혀가기
  • 타이딩 위주의 수정들

위와 같은 종류의 수정들로만 이루어진 커밋들을 만들어내도록 에이전트의 모드를 쉽게 스위치할 수 있으면 좋을 것 같다. AGENTS.md, custom slash commands, subagents 등을 적절히 쓰면 쉽게 될 것.

참고